home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-01-01 | 30.4 KB | 2,930 lines |
- open =$ffc0
- readst =$ffb7
- setlfs =$ffba
- setnam =$ffbd
- setmsg =$ff90
- load =$ffd5
- getin =$ffe4
- input'buffer =512
- clrchn =$ffcc
- close =$ffc3
- chkout =$ffc9
- chkin =$ffc6
- plot =$fff0
- chrout =$ffd2
- strout = $ab1e
- crsr'down =17
- rvs'on =18
- home =19
- del =20
- crsr'right =29
- green =30
- blue =31
- lowercase =14
- uppercase =142
- rvs'off =146
- clr =147
- insert =148
- brown =149
- light'red =150
- dark'grey =151
- medium'grey =152
- light'green =153
- top'left =176
- top'right =174
- bottom'left =173
- bottom'right =189
-
- forms'loc =$3300
- mail'merge'start =$a000
- ;dvo 10
- .org $0801
- .obj "@0:lettermeister"
-
- .byt $0b,$08,$c7,$07,$9e,$32,$30,$36,$31,$00,$00,$00
-
- setup lda #0
- sta 53280
- sta 53281
- sta word'index
- sta forms'loc
- lda #255
- sta cats'found
- lda #26
- sta 53272
- lda #0
- sta 212
- lda #8
- jsr chrout
- lda #11
- sta 649
-
- lda #clr
- jsr chrout
-
- ldx <ban'top
- ldy >ban'top
- jsr copy'parms
- jsr fill'box
- ldx <ban'middle
- ldy >ban'middle
- jsr copy'parms
- jsr fill'box
- ldx <ban'bottom
- ldy >ban'bottom
- jsr copy'parms
- jsr fill'box
-
- ldy #8
- ldx #1
- clc
- jsr plot
- jsr r'patch
- lda #3
- sta 646
-
- inc 199
-
- lda <ban'text
- ldy >ban'text
- jsr strout
-
- ldx #4
- ldy #0
- lda #14
- jsr print'framed'box
-
- ldx #21
- ldy #0
- lda #0
- jsr print'framed'box
-
- load'default lda #0
- jsr setmsg
- lda #2
- ldx 186
- cpx #8
- bcs +
- ldx #8
- + stx device
- ldy #0
- jsr setlfs
- lda #6
- ldx <filename
- ldy >filename
- jsr setnam
- load'file ldx <loading'msg
- ldy >loading'msg
- lda #23
- jsr show
-
- lda #0
- ldx <forms'loc
- ldy >forms'loc
- inx
- jsr load
- ldy #0
- tya
- sta (174),y
- ldx #3
- jsr screen'stash
- jsr open'error
- jsr read'error
-
- get'return ldx <getting'ret'mess
- ldy >getting'ret'mess
- lda #22
- jsr show
-
- lda #8
- ldx <return'name+3
- ldy >return'name+3
- jsr setnam
- lda #2
- ldx device
- ldy #2
- jsr setlfs
- jsr open
- ldx #2
- jsr chkin
-
- lda return'address
- sta 253
- lda return'address+1
- sta 254
-
- ldy #0
-
- - jsr getin
- sta (253),y
- iny
- bne -
-
- jsr clrchn
- lda #2
- jsr close
-
- jsr open'error
- jsr read'error
-
- ldx #21
- ldy #0
- lda #0
- jsr print'framed'box
-
- jsr find'categories
-
- ldx #0
- jsr screen'stash
-
- setup'menu ldx <categories'shadow
- ldy >categories'shadow
- jsr copy'parms
- jsr fill'box
-
- ldx <categories'parms
- ldy >categories'parms
- jsr copy'parms
- jsr fill'box
-
- ldx categories'parms+2
- inx
- ldy categories'parms
- iny
- clc
- jsr plot
- jsr r'patch
-
- ldx #0
- stx 254
-
- - lda 254
- asl
- tax
- lda categories,x
- sta 251
- lda categories+1,x
- sta 252
-
- lda #13
- sta 646
- lda #1
- sta 199
-
- ldy #0
- - lda (251),y
- jsr chrout
- cmp #13
- beq +
- iny
- bne -
-
- + lda #9
- sta 211
- jsr 58732
- jsr r'patch
-
- inc 254
- lda 254
- cmp cats'found
- bne --
-
- ldx <select'prompt
- ldy >select'prompt
- lda #21
- jsr show
-
- lda #8
- sta menux1
- lda #32
- sta menux2
- lda categories'parms+2
- clc
- adc #1
- sta menuy
- lda cats'found
- sta menu'items
- lda #13
- sta menu'text
- lda #1
- sta menu'highlight
-
- jsr menu
-
- lda menu'items
- sec
- sbc #3
- cmp menu'current
- bne +
- jsr set'return
- ldx #3
- jsr screen'restore
- jmp setup'menu
-
- + clc
- adc #1
- cmp menu'current
- bne +
- jmp load'new
-
- + lda menu'current
- tay
- iny
- cpy menu'items
- beq quit'sure
-
- sta current'letter
-
- clear'ram lda #0
- sta 251
- lda #$f0
- sta 252
- lda #0
- ldy #0
- - sta (251),y
- inc 251
- bne -
- inc 252
- ldx 252
- cpx #$fd
- bcc -
-
- jmp get'letter
-
- quit'sure lda #19
- ldx <sure'text
- ldy >sure'text
- jsr show
-
- - jsr getin
- beq -
-
- cmp "y"
- bne +
- jmp quit'loadstar
-
- + cmp "n"
- bne -
-
- jmp setup'menu
-
- get'letter lda current'letter
- asl
- tax
- lda categories,x
- sta 247
- lda categories+1,x
- sta 248
-
- find'letter'start ldy #0
- sty word'index
- sty bottom'of'letter
- sty bottom'of'letter+1
- lda edit'menu
- sta 249
- lda edit'menu+1
- sta 250
- - lda (247),y
- sta (249),y
- cmp "\"
- beq +
-
- jsr bump'page
- inc 249
- bne -
- inc 250
- bne -
-
- + lda 247
- sta top'of'letter
- lda 248
- sta top'of'letter+1
-
- print'page jsr clear'window
- lda #0
- sta word'index
- print'page'2 ldx #5
- ldy #1
- sty reverse'flag
- clc
- jsr plot
- jsr r'patch
- lda #154
- jsr chrout
-
- ldy #0
-
- page'loop ldy #0
- lda 248
- cmp #$f0
- bcc +
- jmp blank'loop
-
- + lda (247),y
- bne +
- lda 247
- sta bottom'of'letter
- lda 248
- sta bottom'of'letter+1
- jmp scan'wait
- + cmp "@"
- beq found'letter'bottom
- ldx #1
- stx 199
- cmp "\"
- bne +
- jmp fill'blank
- + jsr word'wrap
- + ldy #0
- ldx 214
- cpx #20
- bcs page'finished
- jsr bump'page
- jmp page'loop
- woah jmp get'letter
-
- found'letter'bottom lda 247
- sta bottom'of'letter
- lda 248
- sta bottom'of'letter+1
- lda #29
- ldx <next'letter'msg
- ldy >next'letter'msg
- jsr show
- jmp scan'wait
-
- bump'page inc 247
- bne +
- inc 248
- + rts
-
- page'finished lda 211
- cmp #1
- beq +
- jsr print'word
- + jsr bump'page
- lda #29
- ldx <next'letter'msg
- ldy >next'letter'msg
- jsr show
-
- scan'wait jsr getin
- beq scan'wait
-
- cmp #crsr'down
-
- bne +
-
- lda bottom'of'letter+1
- bne back'to'letter
- jsr clear'window
- jmp print'page'2
-
- + cmp "m"
- bne +
- jsr zero'stash
- ldx #1
- jsr screen'stash
- lda #255
- sta space'on
- sta menu'current
- jsr prompts'menu
- ldx #1
- jsr screen'restore
- lda #154
- jsr chrout
- jsr zero'restore
- lda space'on
- cmp " "
- beq back'to'letter
- jmp setup'menu
-
- back'to'letter jsr zero'restore
- lda top'of'letter
- sta 247
- lda top'of'letter+1
- sta 248
- jsr clear'window
- ldy #0
- sty bottom'of'letter
- sty bottom'of'letter+1
- jmp print'page
-
- + cmp " "
- bne scan'wait
-
- jsr search'forward
- bvc +
- jmp get'letter
- + bmi +
- jmp get'letter
- + jmp find'letter'start
-
- lda bottom'of'letter+1
- beq scan'wait
- jsr bump'page
- lda #0
- sta bottom'of'letter+1
- jmp find'letter'start
-
- + jsr word'wrap
- lda word'index
- bne +
- jsr bump'page
- jmp -
- + jmp bump'page
-
- exit ldx #0
- jsr screen'restore
-
- quit'loadstar ldy #80
- lda #0
- - sta input'buffer,y
- dey
- bpl -
- jmp quit
-
- fill'box jsr linx
- lda 214
- pha
- lda 211
- pha
- box'start ldx box'parameters+2
- ldy #0
- clc
- jsr $fff0
- jsr r'patch
- dec box'parameters
- inc box'parameters+3
-
- - ldy box'parameters+1
- - lda box'parameters+4
- cmp #255
- beq +
- sta (209),y
- + lda box'parameters+5
- sta (243),y
- dey
- cpy box'parameters
- bne -
- lda 214
- cmp box'parameters+3
- beq +
-
- inc 214
- jsr 58732
- jsr r'patch
- jmp --
- + lda #home
- jsr $ffd2
- pla
- sta 211
- pla
- sta 214
- jmp 58732
-
- copy'parms stx 251
- sty 252
- ldy #5
- - lda (251),y
- sta box'parameters,y
- dey
- bpl -
- rts
-
- print'framed'box sta number'of'lines
- clc
- jsr plot
- jsr r'patch
-
- lda <box'top
- ldy >box'top
- jsr strout
-
- lda number'of'lines
- - pha
- lda <box'middle
- ldy >box'middle
- jsr strout
- pla
- tay
- dey
- tya
- bpl -
-
- lda <box'bottom
- ldy >box'bottom
- jsr strout
- jmp linx
-
- linx ldy #24
- - lda 217,y
- ora #128
- sta 217,y
- dey
- bpl -
- rts
-
- screen'stash txa
- and #3
- tax
- lda screens,x
- sta 252
- clc
- adc #4
- sta 254
- lda #0
- sta 253
- sta 251
-
- lda #home
- jsr chrout
- jsr r'patch
- sei
- lda #0
- sta 1
-
- ldx #3
- ldy #0
- - lda (209),y
- sta (251),y
- dec 1
- lda (243),y
- inc 1
- sta (253),y
- iny
- bne -
- inc 210
- inc 252
- inc 244
- inc 254
- dex
- bpl -
- lda #$77
- sta 1
- cli
- lda #home
- jmp chrout
-
- screen'restore txa
- and #3
- tax
- lda screens,x
- sta 252
- clc
- adc #4
- sta 254
- lda #0
- sta 253
- sta 251
-
- lda #home
- jsr chrout
- jsr r'patch
- sei
- lda #0
- sta 1
-
- ldx #3
- ldy #0
-
- - lda (251),y
- sta (209),y
- lda (253),y
- dec 1
- sta (243),y
- inc 1
- iny
- bne -
- inc 210
- inc 252
- inc 244
- inc 254
- dex
- bpl -
- lda #$77
- sta 1
- cli
- lda #home
- jmp chrout
-
- find'categories lda <forms'loc
- sta 251
- lda >forms'loc
- sta 252
- inc 251
-
- ldy #0
- sty cats'found
-
- search'plus lda (251),y
- beq end'of'data
- cmp "{SHIFT-+}"
- beq found'category
-
- bump'search'plus inc 251
- bne +
- inc 252
- + jmp search'plus
-
- found'category lda cats'found
- asl
- tax
- lda 251
- sta categories,x
- lda 252
- sta categories+1,x
- inc categories,x
- bne +
- inc categories+1,x
- + inc cats'found
- jmp bump'search'plus
-
- end'of'data lda cats'found
- asl
- tax
- lda <return'text
- sta categories,x
- lda >return'text
- sta categories+1,x
- inc cats'found
- lda cats'found
- asl
- tax
- lda <user'file'text
- sta categories,x
- lda >user'file'text
- sta categories+1,x
- inc cats'found
- lda cats'found
- asl
- tax
- lda <quit'text
- sta categories,x
- lda >quit'text
- sta categories+1,x
- inc cats'found
- rts
-
-
- menu jsr linx
- ldx menuy
- ldy #0
- sty menu'current
- clc
- jsr plot
- jsr r'patch
-
- ldy menux1
- lda menu'highlight
- - sta (243),y
- iny
- cpy menux2
- beq -
- bcc -
-
- menu'wait jsr getin
- beq menu'wait
-
- ldx menu'current
- stx temp
-
- cmp #crsr'down
- beq menu'down
-
- cmp #145
- beq menu'up
-
- cmp #13
- beq menu'select
-
- bit space'on
- bpl menu'wait'loop
- cmp " "
- beq menu'select
-
- menu'wait'loop jmp menu'wait
-
- menu'down inc menu'current
- lda menu'current
- cmp menu'items
- bne highlight
- lda #0
- sta menu'current
- jmp highlight
-
- menu'up dec menu'current
- lda menu'current
- cmp #255
- beq +
- jmp highlight
-
- + ldy menu'items
- dey
- sty menu'current
- jmp highlight
-
- menu'select sta space'on
- rts
-
- highlight lda menuy
- clc
- adc menu'current
- tax
- ldy #0
- clc
- jsr plot
- jsr r'patch
- lda menu'highlight
- sta mcolor
- jsr paint'line
-
- lda menuy
- clc
- adc temp
- tax
- ldy #0
- clc
- jsr plot
- jsr r'patch
- lda menu'text
- sta mcolor
- jsr paint'line
-
- jmp menu'wait
-
- paint'line ldy menux1
- lda mcolor
- - sta (243),y
- iny
- cpy menux2
- beq -
- bcc -
-
- rts
-
- erase'msg ldx #22
- ldy #0
- clc
- jsr plot
- jsr r'patch
- ldy #38
- lda #160
- - sta (209),y
- dey
- bne -
- rts
-
- show lsr
- sta 251
- txa
- pha
- tya
- pha
- jsr erase'msg
-
- ldx #22
- lda #20
- sec
- sbc 251
- tay
- clc
- jsr plot
- jsr r'patch
-
- ldy #1
- lda (243),y
- and #15
- cmp #13
- bne +
- lda #3
- jmp ++
- + lda #13
- + sta 646
- ldy #38
- - sta (243),y
- dey
- bne -
-
-
- lda #1
- sta 199
- pla
- tay
- pla
- ldx #14
- jmp strout
-
- get'word jsr r'patch
- lda 211
- sta orig'cursorx
- lda 214
- sta orig'cursory
- lda 209
- sta 34
- lda 210
- sta 35
- lda 243
- sta 36
- lda 244
- sta 37
-
- lda 45
- sta 253
- lda 46
- sta 254
- inc 253
- bne +
- inc 254
-
- + lda #0
- sta cursor'position
- sta 56328
- sta in'counter
- sta in'length
- jsr print'cursor
-
- get'key jsr getin
- bne key'pressed
- lda 56328
- cmp in'old'time
- beq get'key
-
- increment sta in'old'time
- inc in'counter
- lda in'counter
- cmp #3
- bne get'key
- lda #0
- sta in'counter
- lda 251
- beq +
- jsr un'print'cursor
- jmp get'key
- + jsr print'cursor
- jmp get'key
-
- key'pressed sta in'temp
- jsr linx
- lda in'temp
- cmp #157
- bne +
- jmp move'left
- + cmp #29
- bne +
- jmp move'right
- + ldx in'limit
- bne +
- ldx in'length
- cpx #38
- bne +
- lda in'temp
- sta 631
- lda #1
- sta 198
- jmp un'print'cursor
-
- + ldx cursor'position
- cpx in'length
- bcc check'valid
-
- ldx in'length
- beq check'valid
- cpx in'limit
- bcc check'valid
-
- cmp #13
- beq return
-
- cmp #20
- beq delete
-
- ldx in'limit
- beq check'valid
- jmp get'key
-
- check'valid ldy #0
-
- - lda validation'string,y
- cmp in'temp
- beq found'it
- iny
- cpy #vallength
- bne -
- jmp get'key
-
- found'it lda in'temp
- cmp #13
- beq return
- cmp #20
- beq delete
-
- ldx cursor'position
- cpx in'length
- bcc +
-
- inc in'length
- + inc cursor'position
- lda in'temp
- ldx in'text
- stx 646
- jsr chrout
- jsr linx
- ldy #0
- jsr print'cursor
- ldy cursor'position
- lda in'temp
- sta (253),y
- sta word'buffer,y
- jmp get'key
-
- return lda in'length
- sta 252
- jsr un'print'cursor
- rts
-
- delete lda cursor'position
- bne +
- jmp get'key
- + cmp in'length
- bcs +
- jsr inline'delete
- jmp get'key
-
- + lda in'length
- bne +
- jmp get'key
- + dec in'length
- dec cursor'position
- lda #157
- jsr chrout
- lda " "
- jsr chrout
- jsr chrout
- lda #157
- jsr chrout
- jsr chrout
- jsr print'cursor
- jmp get'key
-
- print'cursor lda #1
- sta 251
- lda cursor'position
- clc
- adc orig'cursorx
- tay
- lda (34),y
- ora #128
- sta (34),y
- lda in'hilight
- sta (36),y
- rts
-
- un'print'cursor lda #0
- sta 251
- lda cursor'position
- clc
- adc orig'cursorx
- tay
- lda (34),y
- and #127
- sta (34),y
- lda in'text
- sta (36),y
- rts
-
- move'left jsr un'print'cursor
- lda cursor'position
- cmp #1
- bcs +
- jsr print'cursor
- jmp get'key
-
- + dec cursor'position
- jsr print'cursor
- lda #157
- jsr chrout
- jmp get'key
-
- move'right jsr un'print'cursor
- lda cursor'position
- cmp in'length
- bcc +
- jmp get'key
-
- + inc cursor'position
- jsr print'cursor
- lda #29
- jsr chrout
- jmp get'key
-
- inline'delete jmp get'key
-
- search'forward ldy #0
-
- - lda (247),y
- beq that's'that
- cmp "@"
- beq found'next'letter
- inc 247
- bne -
- inc 248
- bne -
-
- found'next'letter iny
- iny
- lda (247),y
- dey
- dey
- cmp "{SHIFT-+}"
- beq found'next'category
- lda #128
- sta temp
- jmp that's'that
- found'next'category lda #64
- sta temp
- that's'that bit temp
- rts
-
- search'backward ldy #0
-
- - lda (247),y
- beq that's'that
- cmp "@"
- beq found'next'letter
- dec 247
- lda 247
- cmp #255
- bne -
- dec 248
- bne -
-
- prompts'menu ldy menu'current
- bmi +
- cpy #11
- bcs +
-
- iny
- cpy #11
- beq +
- sty 198
-
- lda #crsr'down
- - sta 631,y
- dey
- bpl -
-
- + lda #255
- sta space'on
- lda #0
- sta mflag
- lda #13
- sta menu'text
- lda #1
- sta menu'highlight
-
- ldx <prompts'shadow
- ldy >prompts'shadow
- jsr copy'parms
- jsr fill'box
-
- ldx <prompts'parms
- ldy >prompts'parms
- jsr copy'parms
- jsr fill'box
-
- ldx prompts'parms+2
- ldy prompts'parms
- clc
- iny
- inx
- jsr plot
- jsr r'patch
-
- lda #0
- sta menu'items
-
- lda #light'green
- jsr chrout
- inc 199
- lda edit'menu
- sta 249
- lda edit'menu+1
- sta 250
- sei
- - ldy #0
- sty 1
- jsr find'equal
- cmp #255
- beq end'edit'menu
- - ldy #0
- lda (249),y
- dec 1
- cli
- jsr chrout
- sei
- inc 1
- cmp #13
- beq +
- jsr bump'eq
- bne -
-
- + dec 1
- cli
- lda prompts'parms
- sta 211
- inc 211
- jsr 58732
- jsr r'patch
- sei
- inc 199
- inc menu'items
- bne --
-
- find'equal lda (249),y
- cmp "\"
- beq ++
- cmp "="
- bne +
- iny
- lda (249),y
- dey
- cmp #13
- beq ++
- jmp bump'eq
- + jsr bump'eq
- jmp find'equal
- + lda #255
- rts
-
- bump'eq inc 249
- bne +
- inc 250
- + rts
-
- end'edit'menu lda #$77
- sta 1
- cli
-
- ldy #0
- sty temp
- - lda prompts'parms
- sta 211
- inc 211
- jsr 58732
- jsr r'patch
- ldy temp
- - lda edit'menu'ap,y
- beq +
- jsr chrout
- iny
- sty temp
- cmp #13
- bne -
- inc menu'items
- bne --
-
- + lda prompts'parms
- sta menux1
- lda prompts'parms+1
- sta menux2
- ldy prompts'parms+2
- iny
- sty menuy
-
- ldx <menu2'mess
- ldy >menu2'mess
- lda #37
- jsr show
-
- ldx #3
- jsr screen'stash
- jsr menu
-
- lda space'on
- cmp " "
- beq +++
-
- lda menu'items
- sec
- sbc #4
- cmp menu'current
- bne +
- jmp select'position
-
- + clc
- adc #1
- cmp menu'current
- bne +
- jmp select'closing
-
- + clc
- adc #1
- cmp menu'current
- bne +
- lda 653
- and #4
- beq regp
- jsr mail'merge
- jmp prompts'menu
- regp jsr print'letter
- jmp prompts'menu
-
- + lda space'on
- cmp " "
- beq +
- ldy menu'current
- iny
- cpy menu'items
- beq +
- jsr enter'data
- ldx #1
- jsr screen'restore
- lda #255
- sta space'on
- jmp prompts'menu
- + rts
-
- zero'stash ldy #7
- - lda 247,y
- sta zero'store,y
- dey
- bpl -
- rts
-
- zero'restore ldy #7
- - lda zero'store,y
- sta 247,y
- dey
- bpl -
- rts
-
- word'wrap sty temp
- ldy word'index
-
- cmp "_"
- bne +
-
- lda #13
-
- + cmp #13
- bne +
- jsr print'word
- jsr car'return
- rts
-
- + inc word'index
- sta input'buffer,y
-
- cmp " "
- bne +
- jsr print'word
- rts
-
- + lda line'pos
- clc
- adc word'index
- cmp right'limit
- bcc +
- jsr car'return
- lda line'pos
- clc
- adc word'index
- cmp right'limit
- bcc +
- jsr print'word
- jsr car'return
-
- + rts
-
- car'return lda #13
- jsr chrout
- lda #29
- jsr chrout
- lda #0
- sta line'pos
- lda reverse'flag
- sta 199
- rts
-
- print'word lda word'index
- bne +
- rts
- + ldy #0
- - lda input'buffer,y
- jsr chrout
- iny
- inc line'pos
- cpy word'index
- bne -
- lda #0
- sta word'index
- rts
-
- fill'blank jsr linx
- jsr bump'page
- ldy #0
- lda (247),y
- sta temp
- jsr bump'page
- lda 247
- sta normal'storage
- lda 248
- sta normal'storage+1
- lda temp
- sec
- sbc #193
- tax
- lda blank'addresses,x
- sta 248
- ldy #0
- sty 247
-
- blank'loop sei
- lda #$74
- sta 1
- lda (247),y
- sta temp
- lda #$77
- sta 1
- cli
- lda temp
- beq print'default
- cmp #255
- beq blank'end
- jsr word'wrap
- ldy #0
- ldx 214
- cpx #20
- bcs +
- jsr bump'page
- jmp blank'loop
- + jmp page'finished
- blank'end lda word'index
- beq no'ex
- jsr print'word
- no'ex lda normal'storage
- sta 247
- lda normal'storage+1
- sta 248
- ldy #0
- jmp page'loop
-
- print'default ldy #0
- - lda blank,y
- beq +
- jsr word'wrap
- ldy temp
- iny
- bne -
-
- + lda normal'storage
- sta 247
- lda normal'storage+1
- sta 248
- ldy #0
- jmp page'loop
-
- clear'window ldx <clear'parms
- ldy >clear'parms
- jsr copy'parms
- jmp fill'box
-
- enter'data ldx menu'current
- lda blank'addresses,x
- sta 248
- ldy #0
- sty 247
-
- ldx #1
- jsr screen'restore
-
- ldx <exit'msg
- ldy >exit'msg
- lda #30
- jsr show
-
- jsr gut'screen
- lda #254
- sta in'limit
- jsr get'word
- ldy menu'current
- lda blank'addresses,y
- sta 252
- lda #255
- sta 251
- dec 252
- ldy in'length
- bne +
- jmp zero'blank
- + lda #255
- iny
- sta (251),y
- dey
- - lda (253),y
- sta (251),y
- dey
- bne -
- rts
-
- zero'blank lda #0
- ldy #255
- - sta (251),y
- dey
- cpy #255
- bne -
- rts
-
- set'return ldx #3
- jsr screen'stash
- ldx <return'mess
- ldy >return'mess
- lda #29
- jsr show
- lda #0
- sta temp
-
- enter'return jsr gut'screen
- jsr linx
- ldx clear2'parms+2
- inx
- inx
- ldy clear2'parms
- clc
- jsr plot
- jsr r'patch
-
- lda #3
- sta 646
-
- lda <line'word
- ldy >line'word
- jsr strout
- lda #1
- sta 646
- lda #0
- ldx temp
- inx
- jsr $bdcd
- lda #3
- sta 646
- lda ":"
- jsr chrout
- lda #13
- sta 646
-
- lda #60
- sta in'limit
- jsr get'word
-
- jsr calc'ret
- inc 253
-
- ldy in'length
- lda #0
- sta (249),y
- dey
- bmi +
- sta (249),y
- - lda (253),y
- sta (249),y
- dey
- cpy #255
- bne -
-
- + inc temp
- lda temp
- cmp #4
- bcs show'return
- jmp enter'return
- rts
-
- show'return jsr gut'screen
- lda #0
- sta temp
- ldx clear2'parms+2
- inx
- inx
- ldy clear2'parms
- clc
- jsr plot
- jsr r'patch
-
- sei
- - lda #5
- sta 211
- jsr 58732
- jsr r'patch
- jsr calc'ret
-
- ldy #0
- - sei
- lda #$74
- sta 1
- lda (249),y
- ldx #$77
- stx 1
- cli
- tax
- beq +
- jsr chrout
- iny
- bne -
-
- + inc 214
- inc temp
- lda temp
- cmp #5
- bcc --
-
- ldx <correct'mess
- ldy >correct'mess
- lda #22
- jsr show
-
- - jsr getin
- beq -
-
- cmp "y"
- bne +
- jsr save'return
- rts
-
- + cmp "n"
- bne -
- ldx #3
- jsr screen'restore
- jmp set'return
-
- save'return ldx <disk'prompt
- ldy >disk'prompt
- lda #29
- jsr show
-
- - jsr getin
- beq -
-
- cmp #13
- beq save'it
-
- cmp "q"
- bne +
- rts
-
- + cmp "0"
- bcc -
- cmp ":"
- bcs -
-
- sec
- sbc #48
- cmp #8
- bcs +
- clc
- adc #10
- + sta device
-
- save'it jsr test'device
- bit temp
- bmi -
- jsr open'error
- lda #15
- ldx <return'name
- ldy >return'name
- jsr setnam
- lda #2
- ldx device
- ldy #1
- jsr setlfs
- jsr open
- ldx #2
- jsr chkout
-
- lda return'address
- sta 253
- lda return'address+1
- sta 254
-
- ldy #0
-
- - sei
- ldx #$74
- stx 1
- lda (253),y
- ldx #$77
- stx 1
- cli
- jsr chrout
- iny
- bne -
-
- jsr clrchn
- lda #2
- jsr close
-
- jsr read'error
-
- rts
-
- calc'ret lda return'address
- sta 249
- lda return'address+1
- sta 250
-
- lda temp
- cmp #4
- beq date
- asl
- asl
- asl
- asl
- asl
- asl
-
- clc
- adc 249
- sta 249
- lda #0
- adc 250
- sta 250
-
- rts
- date lda <65152
- sta 249
- lda >65152
- sta 250
- rts
-
- gut'screen ldx <clear2'parms
- ldy >clear2'parms
- jsr copy'parms
- jsr fill'box
-
- ldx clear2'parms+3
- ldy #0
- inx
- clc
- jsr plot
- jsr r'patch
-
- ldy #39
- lda #64
- - sta (209),y
- dey
- bpl -
-
- ldx clear2'parms+2
- ldy clear2'parms
- clc
- jsr plot
- jsr r'patch
-
- ldy #39
- lda #64
- - sta (209),y
- dey
- bpl -
-
- lda #13
- jmp chrout
-
- load'new ldx #2
- jsr screen'stash
- ln2 ldx <load'prompt
- ldy >load'prompt
- lda #31
- jsr show
- jsr gut'screen
- lda #254
- sta in'limit
- jsr get'word
-
- lda in'length
- bne +
- ldx #2
- jsr screen'restore
- jmp setup'menu
-
- + ldx <disk'prompt
- ldy >disk'prompt
- lda #29
- jsr show
-
- lda #0
- sta 198
-
- - jsr getin
- beq -
-
- cmp #13
- beq load'it
-
- cmp "q"
- bne +
- ldx #2
- jsr screen'restore
- jmp setup'menu
-
- + cmp "0"
- bcc -
- cmp ":"
- bcs -
-
- sec
- sbc #48
- cmp #8
- bcs +
- clc
- adc #10
- + sta device
-
- load'it jsr test'device
- bit temp
- bmi -
- jsr open'error
- lda #2
- ldx device
- ldy #0
- jsr setlfs
- lda in'length
- ldx 253
- ldy 254
- inx
- jsr setnam
- jsr open
- lda #2
- jsr close
- jsr read'error
- lda error'buffer
- cmp "0"
- beq +
- jmp ln2
-
- + lda #15
- jsr close
- lda #2
- ldx device
- ldy #0
- jsr setlfs
- lda in'length
- ldx <word'buffer+1
- ldy >word'buffer+1
- jsr setnam
-
- ldx #2
- jsr screen'restore
- jmp load'file
-
- select'position ldx #2
-
- ldx <pos'msg
- ldy >pos'msg
- lda #20
- jsr show
-
- lda #0
- sta 198
-
- - jsr getin
- beq -
-
- cmp "l"
- bne +
- lda #0
- sta sel'pos
- jmp ++
- + cmp "r"
- bne -
- lda #255
- sta sel'pos
-
- + ldx #3
- jsr screen'restore
- jmp prompts'menu
-
- test'device lda #0
- sta temp
- lda #2
- ldx device
- ldy #2
- jsr setlfs
- jsr open
- lda #2
- jsr close
- jsr readst
- bpl +
- dec temp
- lda #8
- sta device
- + rts
-
- open'error lda #15
- jsr close
- lda #15
- ldx device
- ldy #15
- jsr setlfs
- lda #0
- tax
- tay
- jsr setnam
- jmp open
-
- read'error ldx #15
- jsr chkin
- ldy #0
-
- - jsr getin
- sta error'buffer,y
- cmp #13
- beq +
- iny
- cpy #80
- bcc -
-
- + lda #0
- sta error'buffer,y
- sta 198
-
- sty temp
-
- lda #15
- jsr close
- jsr clrchn
-
- lda error'buffer
- cmp "0"
- bne +
- rts
-
- + ldx <error'buffer
- ldy >error'buffer
- lda temp
- jsr show
-
- - jsr getin
- beq -
-
- ldx #3
- jmp screen'restore
-
- quit lda #10
- sta 649
- lda #0
- sta 199
- lda #30
- ldy #>name
- ldx #<name
- jsr $ffbd
- lda #15
- ldx #8
- ldy #15
- jsr $ffba
- jsr $ffc0
- ldx #15
- jsr $ffc6
- jsr $ffcf
- sta input
- jsr $ffcf
- sta input+1
-
- ldy #0
- - jsr $ffcf
- iny
- cpy #32
- bne -
-
- lda #15
- jsr $ffc3
- jsr $ffcc
-
- ldx #255
- lda input
- cmp #"6"
- bne nope
- lda input+1
- cmp #"3"
- bne nope
-
- lda 53281
- sta 646
-
- ldy #0
- - lda dynamic'keyboard,y
- jsr $ffd2
- beq +
- iny
- bne -
-
- + lda #13
- sta 631
- sta 632
- sta 633
-
- lda #3
- sta 198
- rts
-
- nope lda #147
- jsr $ffd2
- rts
-
- select'closing ldx #2
- jsr screen'stash
- ldx <close'shadow
- ldy >close'shadow
- jsr copy'parms
- jsr fill'box
- ldx <close'parms
- ldy >close'parms
- jsr copy'parms
- jsr fill'box
-
- lda #29
- ldx <closing'mess
- ldy >closing'mess
- jsr show
-
- ldy close'parms
- ldx close'parms+2
- clc
- inx
- iny
- jsr plot
- jsr r'patch
-
- ldy #0
- lda close'parms+5
- sta 646
- inc 199
-
- - lda closings,y
- beq ++
- inc 199
- jsr chrout
- sty temp
- cmp #13
- bne +
- ldx close'parms
- inx
- stx 211
- jsr 58732
- jsr r'patch
- + ldy temp
- iny
- bne -
-
-
-
- + lda #9
- sta menu'items
- lda close'parms
- sta menux1
- lda close'parms+1
- sta menux2
- lda #7
- sta menu'highlight
- lda #3
- sta menu'text
- ldy close'parms+2
- iny
- sty menuy
-
- jsr menu
-
- ldy menu'current
- tya
- iny
- cpy menu'items
- beq define'closing
-
- sta temp
- jmp calc'closing
-
- define'closing nop
-
- dc2 lda #20
- ldx <enter'close'mess
- ldy >enter'close'mess
- jsr show
-
- jsr gut'screen
- lda #37
- sta in'limit
- jsr get'word
-
- ldx <correct'mess
- ldy >correct'mess
- lda #22
- jsr show
-
- - jsr getin
- beq -
-
- cmp "y"
- beq +
-
- cmp "n"
- bne -
- jmp dc2
-
- + lda in'length
- tay
- beq +
-
- inc 253
- ldy #0
- - lda (253),y
- sta user'closing,y
- iny
- cpy in'length
- bne -
-
- + lda #0
- sta user'closing,y
- lda <user'closing
- sta close'address
- lda >user'closing
- sta close'address+1
-
- close'quit ldx #2
- jsr screen'restore
- jmp prompts'menu
-
- + cmp "n"
- bne -
- jmp dc2
-
- calc'closing lda <closings
- sta close'address
- lda >closings
- sta close'address+1
-
- lda temp
- tax
- beq close'quit
-
- ldy #0
- - lda closings,y
- iny
- inc close'address
- bne +
- inc close'address+1
- + cmp #13
- bne -
- dex
- bne -
-
- jmp close'quit
-
- print'letter lda #0
- tax
- tay
- jsr setnam
- lda #4
- ldx #4
- ldy #7
- jsr setlfs
- jsr open
- lda #4
- jsr close
- jsr readst
- bpl +
- ldx <printer'missing
- ldy >printer'missing
- lda #19
-
- jsr show
- lda #0
- sta 198
- - jsr getin
- beq -
-
- p'abort lda #64
- sta mflag
- ldx #3
- jmp screen'restore
-
- + bit mflag
- bmi pstart
- ldx <printer'mess
- ldy >printer'mess
- lda #24
-
- jsr show
- lda #0
- sta 198
- - jsr getin
- beq -
-
- cmp #13
- beq pstart
- cmp "q"
- beq p'abort
- bne -
-
- pstart ldx <printing
- ldy >printing
- lda #27
-
- jsr show
-
- lda #0
- tax
- tay
- jsr setnam
-
- lda #4
- ldx #4
- ldy #7
- jsr setlfs
- jsr open
- ldx #4
- jsr chkout
-
- lda #0
- sta printer'line
- sta word'index
- lda #9
- sta line'pos
-
- ldy #4
- lda #13
- sty temp
- - jsr lfeed
- dec temp
- bpl -
-
- print'return jsr return'tab
- lda #0
- sta temp
- sei
- - jsr calc'ret
-
- ldy #0
- - sei
- lda #$74
- sta 1
- lda (249),y
- ldx #$77
- stx 1
- cli
- tax
- beq +
- jsr chrout
- iny
- bne -
-
- + jsr lfeed
- lda temp
- cmp #4
- beq +
- jsr return'tab
- + inc temp
- lda temp
- cmp #5
- bcc --
-
-
- ldy #0
-
- lda top'of'letter
- sta 247
- lda top'of'letter+1
- sta 248
-
- print'loop ldy #0
- lda 248
- cmp #$f0
- bcc +
- jmp print'blank'loop
-
- + lda (247),y
- beq printed'to'bottom
- cmp "@"
- bne +
- beq printed'to'bottom
- + cmp "\"
- bne +
- jmp print'fill
- + jsr printer'word'wrap
- + ldy #0
- jsr bump'page
- jmp print'loop
-
- printed'to'bottom jsr print'close
- lda #66
- clc
- sbc printer'line
- tax
- lda #13
- - jsr chrout
- dex
- bpl -
-
- jsr clrchn
- lda #4
- jmp close
-
- print'fill jsr bump'page
- ldy #0
- lda (247),y
- sta temp
- jsr bump'page
- lda 247
- sta normal'storage
- lda 248
- sta normal'storage+1
- lda temp
- sec
- sbc #193
- tax
- lda blank'addresses,x
- sta 248
- ldy #0
- sty 247
-
- print'blank'loop sei
- lda #$74
- sta 1
- lda (247),y
- sta temp
- lda #$77
- sta 1
- cli
- lda temp
- beq print'print'default
- cmp #255
- beq print'blank'end
- jsr printer'word'wrap
- ldy #0
- jsr bump'page
- jmp print'blank'loop
- print'blank'end lda word'index
- beq print'no'ex
- jsr print'word
- print'no'ex lda normal'storage
- sta 247
- lda normal'storage+1
- sta 248
- ldy #0
- jmp print'loop
-
- print'print'default lda normal'storage
- sta 247
- lda normal'storage+1
- sta 248
- ldy #0
- jmp print'loop
-
- printer'word'wrap sty temp
- ldy word'index
-
- cmp "_"
- bne +
- lda #13
-
- + cmp #13
- bne +
- jsr print'word
- jsr lfeed
- rts
-
- + inc word'index
- sta input'buffer,y
-
- cmp " "
- bne +
- jsr print'word
- rts
-
- + lda line'pos
- clc
- adc word'index
- cmp #75
- bcc +
- jsr lfeed
- lda line'pos
- clc
- adc word'index
- cmp #75
- bcc +
- jsr print'word
- jsr lfeed
-
- + rts
-
- lfeed ldy printer'line
- iny
- sty printer'line
- cpy #56
- bcc +
-
- ldy #10
- lda #13
-
- - jsr chrout
- dey
- bne -
-
- lda #5
- sta printer'line
-
- + lda #13
- jsr chrout
- lda " "
- ldy #9
- - jsr chrout
- dey
- bpl -
- lda #9
- sta line'pos
- lda reverse'flag
- sta 199
- rts
-
- print'close lda #2
- sta temp
- - jsr lfeed
- dec temp
- bpl -
-
- lda close'address
- sta 248
- lda close'address+1
- sta 249
- ldy #0
-
- jsr return'tab
-
- - lda (248),y
- beq +
- cmp #13
- beq +
- jsr chrout
- iny
- bne -
-
- + lda ","
- jsr chrout
- jsr lfeed
- jsr lfeed
- jsr lfeed
- jsr lfeed
- jsr return'tab
- lda #0
- sta temp
- jsr calc'ret
-
- ldy #0
- - sei
- lda #$74
- sta 1
- lda (249),y
- ldx #$77
- stx 1
- cli
- tax
- beq +
- jsr chrout
- iny
- bne -
-
- + jmp lfeed
-
-
- return'tab lda sel'pos
- beq +
-
- ldx #35
- lda " "
- - jsr chrout
- dex
- bne -
-
- + rts
-
- mail'merge lda #128
- sta mflag
- ldx #2
- jsr screen'stash
- ldx <merge'q
- ldy >merge'q
- lda #33
- jsr show
-
- - jsr getin
- beq -
- cmp "c"
- beq mm2
- cmp "s"
- bne -
- lda #0
- sta mflag
-
- mm2 ldx <mail'prompt
- ldy >mail'prompt
- lda #31
- jsr show
- jsr gut'screen
- lda #254
- sta in'limit
- jsr get'word
-
- lda in'length
- bne +
- ldx #2
- jsr screen'restore
- jmp setup'menu
-
- + ldx <disk'prompt
- ldy >disk'prompt
- lda #29
- jsr show
-
- lda #0
- sta 198
-
- - jsr getin
- beq -
-
- cmp #13
- beq load'mail
-
- cmp "q"
- bne +
- ldx #3
- jsr screen'restore
- rts
-
- + cmp "0"
- bcc -
- cmp ":"
- bcs -
-
- sec
- sbc #48
- cmp #8
- bcs +
- clc
- adc #10
- + sta device
-
- load'mail jsr test'device
- bit temp
- bmi -
- jsr open'error
- lda #2
- ldx device
- ldy #2
- jsr setlfs
- lda in'length
- ldx 253
- ldy 254
- inx
- jsr setnam
- jsr open
- lda #2
- jsr close
- jsr read'error
- lda error'buffer
- cmp "0"
- beq +
- jmp mm2
-
- + lda #15
- jsr close
- lda #2
- jsr close
- ldx <mail'mess
- ldy >mail'mess
- lda #24
- jsr show
-
- lda #2
- ldx device
- ldy #2
- jsr setlfs
- lda in'length
- ldx <word'buffer+1
- ldy >word'buffer+1
- jsr setnam
- jsr open
- jsr clrchn
- ldx #2
- jsr chkin
-
- lda <mail'merge'start
- sta 247
- lda >mail'merge'start
- sta 248
- ldy #0
- sty eof
-
- - jsr getin
- sta temp
- jsr readst
- and #64
- beq +
- dec eof
- + lda temp
- sta (247),y
- inc 247
- bne +
- inc 248
- + bit eof
- bpl -
- tya
- sta (247),y
- lda #2
- jsr close
- jsr clrchn
-
- lda <mail'merge'start
- sta 247
- lda >mail'merge'start
- sta 248
- sei
- lda #$74
- sta 1
-
- skip'number jsr skip'field
- skip'keyword sei
- lda #$74
- sta 1
- bit mflag
- bvs +
- jsr skip'field
- cmp #0
- bne get'addressee
- + lda #$77
- sta 1
- cli
- jmp merge'out
-
- get'addressee ldy #0
- lda blank'addresses
- sta 250
- sty 249
- lda blank'addresses+4
- sta 254
- sty 253
-
- ldy #4
- - lda hey'bub,y
- sta (253),y
- dey
- bpl -
-
- lda #5
- clc
- adc 253
- sta 253
- lda #0
- adc 254
- sta 254
-
- ldy #0
- - lda (247),y
- cmp #13
- beq eo1
- sta (253),y
- sta (249),y
-
- inc 247
- bne +
- inc 248
- + inc 253
- bne +
- inc 254
- + inc 249
- bne +
- inc 250
-
- + cmp #13
- bne -
-
- eo1 lda #255
- sta (249),y
- sta (253),y
-
- - dec 253
- ldx 253
- cpx #255
- bne +
- dec 254
-
- + lda (253),y
- cmp " "
- beq -
-
- inc 253
- bne +
- inc 254
- + lda ":"
- sta (253),y
-
-
- get'line'2 jsr skip'field
- lda blank'addresses+1
- sta 250
- lda #0
- sta 249
-
- ldy #0
- - lda (247),y
- cmp #13
- beq eo2
- sta (249),y
-
- inc 247
- bne +
- inc 248
- + inc 249
- bne +
- inc 250
-
- + cmp #13
- bne -
-
- eo2 lda #255
- sta (249),y
-
- get'line'3 jsr skip'field
- lda blank'addresses+2
- sta 250
- lda #0
- sta 249
-
- ldy #0
- - lda (247),y
- cmp #13
- beq eo3
- sta (249),y
-
- + inc 247
- bne +
- inc 248
- + inc 249
- bne +
- inc 250
-
- + cmp #13
- bne -
-
- eo3 lda #255
- sta (249),y
-
- get'line'4 jsr skip'field
- lda blank'addresses+3
- sta 250
- lda #0
- sta 249
-
- ldy #0
- - lda (247),y
- cmp #13
- beq eo4
- sta (249),y
-
- + inc 247
- bne +
- inc 248
- + inc 249
- bne +
- inc 250
-
- + cmp #13
- bne -
-
- eo4 lda #255
- sta (249),y
-
- jsr skip'field
- jsr skip'field
- lda #$77
- sta 1
- cli
- ldx #2
- jsr screen'restore
-
- lda 247
- sta hold'm
- lda 248
- sta hold'm+1
- jsr print'letter
- lda hold'm
- sta 247
- lda hold'm+1
- sta 248
- jmp skip'keyword
- merge'out rts
-
- skip'field ldy #0
- - lda (247),y
- beq ++
- inc 247
- bne +
- inc 248
- + cmp #13
- bne -
- + rts
-
- r'patch lda 210
- sec
- sbc 648
- clc
- adc #$d8
- sta 244
- lda 209
- sta 243
- rts
-
- name .asc "r0:hello connect=hello connect":.byt 0
- input .buf 2
- dynamic'keyboard .byt 147,17,17,17
- .asc "load":.byt 34:.asc "hello connect"
- .byt 34:.asc ",8":.byt 13,17,17,17,17
- .asc "run":.byt 19,17,0
- in'hilight .byt 1
- in'text .byt 13
- in'limit .byt 253
- in'length .byt 127
-
- validation'string .asc "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
- .asc " 1234567890+-\!#$%&'()?*./,;:=_"
- .byt 13,20
- in'temp .byt 0
- in'counter .byt 0
- in'found .byt 0
- in'pos .byt 0
- in'ypos .byt 0
- in'old'time .byt 0
- vallength =in'temp-validation'string
-
- cursor'position .byt 0
- string'location .word input'buffer
- orig'cursorx .byt 0
- orig'cursory .byt 0
-
- box'parameters =*
- x1 .byt 1
- x2 .byt 20
- y1 .byt 1
- y2 .byt 20
- screen'code .byt 255
- box'color .byt 1
-
- ban'top .byt 0,39,0,0,228,13
- ban'middle .byt 0,39,1,1,160,3
- ban'bottom .byt 0,39,2,1,227,5
- ban'text .asc "L e t t e r M e i s t e r":.byt 0
-
- categories'shadow .byt 9,33,6,17,255,6
- categories'parms .byt 8,32,5,16,160,13
-
- prompts'shadow .byt 3,36,4,18,255,6
- prompts'parms .byt 4,37,3,17,160,13
-
- clear'parms .byt 1,38,5,18,160,14
- clear2'parms .byt 0,39,8,15,32,13
-
- close'shadow .byt 8,31,5,14,255,5
- close'parms .byt 9,32,4,13,160,3
- .scr "by JeFf JoNeS, CoPyRiGhT 1991 SoFtDiSk, InC."
- menuy .byt 0
- menux1 .byt 0
- menux2 .byt 0
- menu'items .byt 0
- menu'text .byt 0
- menu'highlight .byt 0
- menu'current .byt 0
- mcolor .byt 0
- hey'bub .asc "Dear "
-
- merge'q .asc "Single Sheet or Continuous? (S/C)":.byt 0
- mail'mess .asc "Getting MAIL BAG File...":.byt 0
- mail'prompt .asc "Please Enter MAIL BAG File Name":.byt 0
- getting'ret'mess .asc "Getting Return Address":.byt 0
- printing .asc "< < < P R I N T I N G > > >":.byt 0
- printer'missing .asc "Printer Not Online!":.byt 0
- printer'mess .asc "Set Top Of Form/RETURN/Q":.byt 0
- enter'close'mess .asc "Enter Closing/RETURN":.byt 0
- closing'mess .asc "Select Desired Closing/RETURN":.byt 0
- pos'msg .asc "LEFT or RIGHT? (L/R)":.byt 0
- return'name .asc "@0:lmreturn,s,w"
- disk'prompt .asc "Insert Disk/RETURN/Q/8/9/0...":.byt 0
- load'prompt .asc "Enter File Name. RETURN Aborts":.byt 0
- correct'mess .asc "Is This Correct? (Y/N)":.byt 0
- user'file'text .asc "LOAD New Forms":.byt 13
- return'text .asc "Setup Return Address":.byt 13
- quit'text .asc "Quit To LOADSTAR":.byt 13
- select'prompt .asc "CRSR/RETURN To Select":.byt 0
- sure'text .asc "Are You Sure? (Y/N)":.byt 0
- filename .asc "lmtext"
- loading'msg .asc "Loading Form Letters...":.byt 0
- menu2'mess .asc "Select Option Or SPACE Back To Letter":.byt 0
- next'letter'msg .asc "SPACE Next Letter M For Menu":.byt 0
- exit'msg .asc "Press RETURN to exit edit mode":.byt 0
- line'word .asc "LINE ":.byt 0
- return'mess .asc "Enter Line/RETURN To Continue":.byt 0
- edit'menu'ap .byt rvs'on,light'green:.asc "Return Address Position":.byt 13
- .byt rvs'on,light'green:.asc "Select Closing":.byt 13
- .byt rvs'on,light'green:.asc "Print Letter/CTRL-M Mail Merge":.byt 13
- .byt rvs'on,light'green:.asc "Return To Main Menu":.byt 13,0
- box'top .byt 158,rvs'off,top'left
- .asc "{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}"
- .byt top'right,0
- box'middle .byt 158,rvs'off:.asc "{SHIFT--}":.byt rvs'on,154
- .asc " ":.byt rvs'off,158:.asc "{SHIFT--}":.byt 0
- box'bottom .byt 158,bottom'left
- .asc "{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}"
- .byt bottom'right,19,0
- number'of'lines .byt 0
- blank .asc "<<BLANK>>":.byt 0
- closings .asc "Sincerely yours":.byt 13
- .asc "Sincerely":.byt 13
- .asc "Hope to hear from you":.byt 13
- .asc "Love":.byt 13
- .asc "Always":.byt 13
- .asc "Yours in love":.byt 13
- .asc "Happy holidays":.byt 13
- .asc "Yours truly":.byt 13
- .asc "Define Closing":.byt 0
- user'closing .buf 39
- close'address .word closings
- screens .byt $d0,$d8,$e0,$e8
- cats'found .byt 0
- temp .byt 0
- current'letter .byt 0
-
- blank'addresses .byt $f0,$f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8,$f9,$fa
- edit'menu .word $fb00
- return'address .word $fd80
- categories .buf 32
- top'of'letter .word 0
- bottom'of'letter .word 0
- next'letter .word 0
- first'letter .word 0
- end'of'category .word 0
- space'on .byt 0
- zero'store .buf 8
- right'limit .byt 37
- left'limit .byt 1
- reverse'flag .byt 0
- last'char .byt 0
- word'index .byt 0
- line'pos .byt 0
- blank'storage .word 0
- normal'storage .word 0
- device .byt 0,0
- sel'pos .byt 255
- printer'line .byt 255
- spacing .byt 0
- error'buffer .buf 60
- word'buffer .buf 255
- eof .byt 0
- mflag .byt 0
- hold'm .buf 2
-
-